﻿using Mes.Application.DTO.Inputs.Quality;
using Mes.Application.DTO.Results.Quality;
using Mes.Domain.BoundedContext;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Mes.Application.Services.Quality
{
    public interface ICharacteristicService
    {
        /// <summary>
        /// 添加质量特征
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task AddCharacteristicAsync(AddingCharacteristicInput input);

        /// <summary>
        /// 删除质量特征
        /// </summary>
        /// <param name="char_id">质量特征Id</param>
        /// <returns></returns>
        Task DeleteCharacteristicAsync(int char_id);

        /// <summary>
        /// 编辑质量特征
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task UpdateCharacteristicAsync(UpdatingCharacteristicInput input);

        /// <summary>
        /// 查询质量特征实体
        /// </summary>
        /// <param name="char_id">质量特征Id</param>
        /// <returns></returns>
        Task<CharacteristicDetailResult> GetCharacteristicAsync(int char_id);

        /// <summary>
        /// 查询质量特征分页列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedItemsData<CharacteristicResult>> GetCharacteristicsAsync(GettingCharacteristicsInput input);

        /// <summary>
        /// 根据质量规格ID列表获取关联的质量特征
        /// </summary>
        /// <param name="qm_spec_id_list">质量规则ID列表，以，分隔</param>
        /// <returns></returns>
        Task<ItemsResult<CharacteristicResultForQmSpec>> GetCharacteristicForQmSpecAsync(string? qm_spec_id_list);
    }
}
